package com.os.utils;


import com.os.content.MemoryContent;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Objects;

/**
 * 文件工具类
 */
public class FileUtils {

    public static String getPath() {
        String path = "";
        try {
            //jar 中没有目录的概念
            URL location = FileUtils.class.getProtectionDomain().getCodeSource().getLocation();//获得当前的URL
            File file = new File(location.getPath());//构建指向当前URL的文件描述符
            if (file.isDirectory()) {//如果是目录,指向的是包所在路径，而不是文件所在路径
                path = file.getAbsolutePath();//直接返回绝对路径
            } else {//如果是文件,这个文件指定的是jar所在的路径(注意如果是作为依赖包，这个路径是jvm启动加载的jar文件名)
                path = file.getParent();//返回jar所在的父路径
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return path;
    }

    /**
     * 返回资源文件夹中的路径
     *
     * @param filename
     * @return
     */
    public static String getPathOfRes(String filename) {
        ClassLoader classLoader = FileUtils.class.getClassLoader();
        String path = classLoader.getResource(filename).getPath();
        // 如果为jar包运行
        if (path.contains(".jar!\\") || path.contains(".jar!/")) {
            path = String.format(getPath() + "/conf/%s", filename);
        }

        return path;
    }

    /**
     * 读取文件文本，并返回
     *
     * @param path
     * @return
     */
    public static String getFileText(String path) {
        StringBuilder ss = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(path));
            while (br.ready()) {
                // 读取内容到temp,len表示读取的长度
                ss.append(br.readLine()).append("\n");
            }

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return ss.toString();

    }


}
